import { _decorator, Button, Component, Label, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('LevelScript')
export class LevelScript extends Component {

    @property(Label)
    levelLabel: Label = null;  // 显示关卡编号

    @property(Label)
    starLabel: Label = null;  // 显示星星数（最多3颗）

    @property(Button)
    levelButton: Button = null;  // 按钮，点击挑战关卡

    @property
    levelIndex: number = 1;  // 当前关卡的编号

    @property
    maxStars: number = 3;  // 最大星星数

    @property
    requiredStarsForUnlock: number = 1;  // 解锁当前关卡所需的星星数

    private currentStars: number = 0;  // 当前关卡的星星数
    private isUnlocked: boolean = false;  // 当前关卡是否解锁
    



    

    start() {

        // 初始化按钮点击事件
        this.node.on('click', this.onLevelClick, this);
        // 更新关卡显示状态
        this.updateLevelStatus();

    }

    // 更新关卡的解锁状态和显示
    updateLevelStatus() {
        // 默认第一个关卡是解锁的
        if (this.levelIndex === 1) {
            this.isUnlocked = true;
            this.currentStars = 0;  // 初始化星星数
        } else {
            // 判断上一关卡是否至少有1颗星，满足条件则解锁
            let previousLevel = this.getPreviousLevel();
            if (previousLevel && previousLevel.currentStars >= this.requiredStarsForUnlock) {
                this.isUnlocked = true;
            }
        }

        // 更新关卡星星和编号的显示
        this.starLabel.string = `Stars: ${this.currentStars} / ${this.maxStars}`;
        this.levelLabel.string = `Level ${this.levelIndex + 1}`;
        
        // 如果解锁了，按钮可点击
        if (this.isUnlocked) {
            this.levelButton.interactable = true;
            this.starLabel.node.color = Color.WHITE;  // 解锁关卡显示白色
        } else {
            // 如果没有解锁，按钮不可点击
            this.levelButton.interactable = false;
            this.starLabel.node.color = Color.GRAY;  // 未解锁关卡显示灰色
        }
    }

    update(deltaTime: number) {
        
    }
}


